import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import '../const/font_weight.dart';

/*
 * 按钮样式
*/
enum ButtonStyleEnum {
  text, // 文本
  iconText, // icon + 文本
  textIcon, // 文本 + icon
  iconTextIcon, // icon + 文本 + icon
}

/*
 * 按钮类型
*/
enum ButtonTypeEnum {
  base, // 填充
  outline, // 描边
  text; // 文本
}

/*
 * 按钮权重
*/
enum ButtonWeightEnum {
  primary, // 主按钮
  defaulT, // 次按钮
}

/*
 * 按钮状态
*/
enum ButtonStausEnum {
  normal, // 正常
  disable, // 禁用
}

/*
 * 按钮排列方式
*/
enum ButtonAlignmentEnum {
  block, // 通栏-横向铺满
  groupRow, // 横向
  groupColumn, // 纵向
  adaptive, // 自适应
}

/*
 * 按钮大小
*/
enum ButtonSizeEnum {
  large, // 大按钮
  medium, // 中按钮
  small; // 小按钮

  // icon 宽高
  double get iconWH {
    switch (this) {
      case ButtonSizeEnum.large:
        return 20.h;
      case ButtonSizeEnum.medium:
        return 18.h;
      case ButtonSizeEnum.small:
        return 16.h;
    }
  }

  // icon 与文本的空隙
  double get iconSpace {
    return 4;
  }

  // 按钮高度
  double get height {
    switch (this) {
      case ButtonSizeEnum.large:
        return 40.h;
      case ButtonSizeEnum.medium:
        return 32.h;
      case ButtonSizeEnum.small:
        return 28.h;
    }
  }

  double get fontSize {
    switch (this) {
      case ButtonSizeEnum.large:
        return LxFontWeightEnum.titleMedium.size;
      case ButtonSizeEnum.medium:
        return LxFontWeightEnum.titleSmall.size;
      case ButtonSizeEnum.small:
        return LxFontWeightEnum.markSmall.size;
    }
  }

  FontWeight get fontWeight {
    switch (this) {
      case ButtonSizeEnum.large:
        return LxFontWeightEnum.titleMedium.fontWeight;
      case ButtonSizeEnum.medium:
        return LxFontWeightEnum.titleSmall.fontWeight;
      case ButtonSizeEnum.small:
        return LxFontWeightEnum.markSmall.fontWeight;
    }
  }

  // 左右的 padding
  double get leftPadding {
    switch (this) {
      case ButtonSizeEnum.large:
        return 16.w;
      case ButtonSizeEnum.medium:
        return 12.w;
      case ButtonSizeEnum.small:
        return 8.w;
    }
  }

  // 左右的 padding
  double get rightPadding {
    switch (this) {
      case ButtonSizeEnum.large:
        return 16.w;
      case ButtonSizeEnum.medium:
        return 12.w;
      case ButtonSizeEnum.small:
        return 8.w;
    }
  }
}
